<?php
namespace app\index\controller;

class Weather 
{
    // 请求的接口URL
    var $apiUrl = 'http://apis.juhe.cn/simpleWeather/query';
    // 请求参数
    var $params = [
        'city' => '苏州', // 要查询的城市
        'key' => '0f5b7d4523a2871b69514c8bf1273a6f'
    ];
    
    public function index()
    {
        $paramsString = http_build_query($this->params);
        
        // 发起接口网络请求
        $response = $this->juheHttpRequest($this->apiUrl, $paramsString , 1);
        $result = json_decode($response, true);
        if ($result) {
            $errorCode = $result['error_code'];
            if ($errorCode == 0) {
                // 获取返回的天气相关信息，具体根据业务实际逻辑调整修改
                $data = $result['result'];
        
                // 打印当前实况天气信息
                echo "当前城市：{$data["city"]}".PHP_EOL;
                echo "当前温度：{$data["realtime"]["temperature"]}".PHP_EOL;
                echo "当前湿度：{$data["realtime"]["humidity"]}".PHP_EOL;
                echo "当前天气：{$data["realtime"]["info"]}".PHP_EOL;
                echo "当前风向：{$data["realtime"]["direct"]}".PHP_EOL;
                echo "当前风力：{$data["realtime"]["power"]}".PHP_EOL;
                echo "当前空气质量：{$data["realtime"]["aqi"]}".PHP_EOL;
        
            } else {
                // 请求异常
                echo "请求异常:{$errorCode}_{$result["reason"]}".PHP_EOL;
            }
        } else {
            // 可能网络异常等问题，无法正常获得相应内容，业务逻辑可自行修改
            echo "请求异常".PHP_EOL;
        }        
                
    }
    
    /**
     * 发起网络请求函数
     * @param $url 请求的URL
     * @param bool $params 请求的参数内容
     * @param int $ispost 是否POST请求
     * @return bool|string 返回内容
     */
    function juheHttpRequest($url, $params = false, $ispost = 0)
    {
        $httpInfo = array();
        $ch = curl_init();
    
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36');
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
        curl_setopt($ch, CURLOPT_TIMEOUT, 12);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        if ($ispost) {
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
            curl_setopt($ch, CURLOPT_URL, $url);
        } else {
            if ($params) {
                curl_setopt($ch, CURLOPT_URL, $url.'?'.$params);
            } else {
                curl_setopt($ch, CURLOPT_URL, $url);
            }
        }
        $response = curl_exec($ch);
        if ($response === FALSE) {
            // echo "cURL Error: ".curl_error($ch);
            return false;
        }
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $httpInfo = array_merge($httpInfo, curl_getinfo($ch));
        curl_close($ch);
        return $response;
    }    
    
    public function life()
    {
        $apiUrl = 'http://apis.juhe.cn/simpleWeather/life';
        // 请求参数
        $params = [
            'city' => '苏州', // 要查询的城市
            'key' => '您申请的接口调用Key'
        ];
        $paramsString = http_build_query($params);
        
        // 发起接口网络请求
        $response = juheHttpRequest($apiUrl, $paramsString , 1);
        $result = json_decode($response, true);
        if ($result) {
            $errorCode = $result['error_code'];
            if ($errorCode == 0) {
                // 获取返回的天气相关信息，具体根据业务实际逻辑调整修改
                $data = $result['result']['life'];
        
                // 打印当前实况天气信息
                echo "空调指数：{$data['kongtiao']['v']}，{$data['kongtiao']['des']}".PHP_EOL;
                echo "过敏指数：{$data['guomin']['v']}，{$data['guomin']['des']}".PHP_EOL;
                echo "舒适度指数：{$data['shushidu']['v']}，{$data['shushidu']['des']}".PHP_EOL;
                echo "穿衣指数：{$data['chuanyi']['v']}，{$data['chuanyi']['des']}".PHP_EOL;
                echo "钓鱼指数：{$data['diaoyu']['v']}，{$data['diaoyu']['des']}".PHP_EOL;
                echo "感冒指数：{$data['ganmao']['v']}，{$data['ganmao']['des']}".PHP_EOL;
                echo "紫外线指数：{$data['ziwaixian']['v']}，{$data['ziwaixian']['des']}".PHP_EOL;
                echo "洗车指数：{$data['xiche']['v']}，{$data['xiche']['des']}".PHP_EOL;
                echo "运动指数：{$data['yundong']['v']}，{$data['yundong']['des']}".PHP_EOL;
                echo "带伞指数：{$data['daisan']['v']}，{$data['daisan']['des']}".PHP_EOL;
                // .......
        
            } else {
                // 请求异常
                echo "请求异常:{$errorCode}_{$result["reason"]}".PHP_EOL;
            }
        } else {
            // 可能网络异常等问题，无法正常获得相应内容，业务逻辑可自行修改
            echo "请求异常".PHP_EOL;
        }
    }
    
}